// function nonenumerable(target, name, descriptor) {
//   descriptor.enumerable = false;
//   return descriptor;
// }

// function decorateArmour(target, key, descriptor) {
//   const method = descriptor.value;
//   let moreDef = 100;
//   let ret;
//   descriptor.value = (...args) => {
//     args[0] += moreDef;
//     ret = method.apply(target, args);
//     return ret;
//   };
//   return descriptor;
// }

// function decorateLight(target, key, descriptor) {
//   const method = descriptor.value;
//   let moreAtk = 50;
//   let ret;
//   descriptor.value = (...args) => {
//     args[1] += moreAtk;
//     ret = method.apply(target, args);
//     return ret;
//   };
//   return descriptor;
// }

// function say(user) {
//   return function (target, name: string, descriptor: PropertyDescriptor) {
//     let func: Function = descriptor.value;
//     let aa = target.prototype;

//     descriptor.value = function () {
//       console.log('this is say method');
//       console.log(`I an ${user}`);
//       return func.apply(target, arguments);
//       // return func();
//     };

//     return descriptor;
//   };
// }

// class Man {
//   def: any;
//   atk: any;
//   hp: any;
//   // name: string;

//   constructor(private name = 'aaa') {
//     // this.name = name;
//     // this.init(2, 3, 3);
//   }

//   @nonenumerable
//   // abc() {
//   //   console.log();
//   // }

//   @decorateArmour
//   // @decorateLight
//   // init(def, atk, hp) {
//   //   this.def = def; // 防御值
//   //   this.atk = atk; // 攻击力
//   //   this.hp = hp; // 血量
//   // }

//   @say('admin')
//   // say() {
//   //   console.log(`my name is ${this.name}`);
//   // }

//   toString() {
//     return `防御力:${this.def},攻击力:${this.atk},血量:${this.hp}`;
//   }
// }

// let tony = new Man('tony');
// tony.say();

// console.log(`当前状态 ===> ${tony}`);
